package com.shop.entity;

import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import java.io.Serializable;
import java.math.BigInteger;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 邮件日志 实体类。
 *
 * @author 彭新才
 * @since 2024-10-15
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "邮件日志")
@Table(value = "shop_email")
public class ShopEmail implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 自增id
     */
    @Id(keyType = KeyType.Auto)
    @Schema(description = "自增id")
    private BigInteger id;

    /**
     * SMTP服务器
     */
    @Schema(description = "SMTP服务器")
    private String smtpHost;

    /**
     * SMTP端口
     */
    @Schema(description = "SMTP端口")
    private String smtpPort;

    /**
     * 邮箱用户名
     */
    @Schema(description = "邮箱用户名")
    private String smtpName;

    /**
     * 发信人邮件
     */
    @Schema(description = "发信人邮件")
    private String smtpAccount;

    /**
     * 发件人姓名
     */
    @Schema(description = "发件人姓名")
    private String smtpSendName;

    /**
     * 状态（0未发送，1已发送，2已失败）
     */
    @Schema(description = "状态（0未发送，1已发送，2已失败）")
    private Boolean status;

    /**
     * 收件邮箱
     */
    @Schema(description = "收件邮箱")
    private String email;

    /**
     * 邮件标题
     */
    @Schema(description = "邮件标题")
    private String title;

    /**
     * 邮件内容
     */
    @Schema(description = "邮件内容")
    private String templateValue;

    /**
     * 邮件变量（数组则json字符串存储）
     */
    @Schema(description = "邮件变量（数组则json字符串存储）")
    private String templateVar;

    /**
     * 失败原因
     */
    @Schema(description = "失败原因")
    private String reason;

    /**
     * 耗时时间（单位秒）
     */
    @Schema(description = "耗时时间（单位秒）")
    private Long tsc;

    /**
     * 添加时间
     */
    @Schema(description = "添加时间")
    private Long addTime;

    /**
     * 更新时间
     */
    @Schema(description = "更新时间")
    private Long updTime;

}
